前兩天我們聊了 MCP-SSE 和 n8n 的基礎,以及潛在威脅。今天,我們來動手建立一個最小的 MCP-SSE + n8n workflow,來個經典的 Hello World。這不僅是練習,還能展示即時 AI 自動化的威力,並暴露無授權 API 呼叫的風險,為後續攻擊模擬鋪路。
假設你已安裝 n8n(可用 Docker 快速部署):
docker run -it --rm --name n8n -p 5678:5678 -v ~/.n8n:/home/node/.n8n n8nio/n8n
MCP-SSE 伺服器已運行在 http://localhost:8000/api/stream,使用 OpenAI LLM 處理請求並透過 Server-Sent Events(SSE)推送回應(假設由團隊或開源專案設置)。
開啟 n8n 面板(http://localhost:5678),創建新 workflow。
Webhook 節點:
方法:POST(匹配 SSE 請求)
路徑:/hello
驗證:無(模擬未保護狀態,後續會加防護)
HTTP Request 節點:
URL:http://localhost:8000/api/stream
方法:POST
Body:{"prompt": "Say Hello World from AI"}
Code 節點(處理 SSE 回應):n8n 的 HTTP Request 節點對 SSE 支援有限,新增 Code 節點解析事件流:
const sse_data = $input.first().json.data || "";
const events = sse_data.trim().split("\n\n");
const messages = events
.map(event => event.replace("data:", "").trim())
.filter(msg => msg !== "[DONE]" && msg !== "");
const selectedWords = ["Hello", "World", "From", "AI"];
const output = messages.filter(msg => selectedWords.includes(msg));
return [{ json: { helloWorldFromAI: output.join(" ") } }];
Respond to Webhook 節點:返回結果。
用 postman 觸發:
n8n 輸出狀態(Code 節點結果):
這顯示 MCP-SSE 透過 SSE 推送 AI 回應,n8n 成功解析並輸出。
模擬駭客直接呼叫 MCP-SSE 的 /api/stream(假設無 API Key 保護):
這表示任何人可訪問 SSE 端點,竊聽即時資料流或觸發 AI 任務,暴露嚴重安全風險。
這個 MCP-SSE + n8n setup 展示即時 AI 自動化的威力,但弱點明顯:
明天會模擬第一個攻擊:不受控的 Webhook 和 MCP-SSE 端點被任意呼叫。